From 0912a6c2f5e5137705f93691c418cc8c6184fb9d Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 16 Sep 2015 23:16:44 +0200 Subject: [PATCH] widget: Use gtk_widget_queue_allocate() when clip changes There's no need to queue a full resize there. --- gtk/gtkwidget.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 75fa7434f7..b0713bff44 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -8153,16 +8153,19 @@ gtk_widget_real_style_updated (GtkWidget *widget) if (widget->priv->anchored) { - static GtkBitmask *affects_size, *affects_redraw; + static GtkBitmask *affects_size, *affects_redraw, *affects_allocate; if (G_UNLIKELY (affects_size == NULL)) { - affects_size = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_CLIP); + affects_size = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_SIZE); + affects_allocate = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_CLIP); affects_redraw = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_REDRAW); } if (changes == NULL || _gtk_bitmask_intersects (changes, affects_size)) gtk_widget_queue_resize (widget); + else if (_gtk_bitmask_intersects (changes, affects_allocate)) + gtk_widget_queue_allocate (widget); else if (_gtk_bitmask_intersects (changes, affects_redraw)) gtk_widget_queue_draw (widget); } -- 2.30.2